package com.doubao.wechat.dto.request;

import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

/**
 * 微信支付订单请求DTO
 */
@Data
public class WxPayOrderRequest {

    /**
     * 用户ID (新增字段，用于在 openid 缺失时查找)
     */
    private Long userId;

    /**
     * 应用ID (可选，不填则根据trade_type自动判断)
     */
    private String appid;

    /**
     * 商品描述
     */
    @NotBlank(message = "商品描述不能为空")
    private String description;

    /**
     * 商户订单号
     */
    @NotBlank(message = "商户订单号不能为空")
    private String outTradeNo;

    /**
     * 支付结果通知地址 (新增字段)
     */
    private String notifyUrl;

    /**
     * 支付类型 jsapi/小程序
     */
    @NotBlank(message = "支付类型不能为空")
    private String tradeType;

    /**
     * 用户openid
     */
    @NotBlank(message = "用户openid不能为空")
    private String openid;

    /**
     * 总金额（单位：分）
     */
    @NotNull(message = "支付金额不能为空")
    @Min(value = 1, message = "支付金额必须大于0")
    private Integer totalAmount;

    /**
     * 商户自定义数据
     */
    private String attach;

    /**
     * 订单优惠标记
     */
    private String goodsTag;

    /**
     * 支付终端IP
     */
    private String clientIp;

    /**
     * 是否需要电子发票入口
     */
    private Boolean supportFapiao = false;
}